import login.LoginSystem;
import manager.StudentManager;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        loginSystem();
    }
    public static void loginSystem() {
        LoginSystem loginSystem = new LoginSystem();
        Scanner sc = new Scanner(System.in);
        boolean running = true;
        loginSystem.loadFromFile();
        while (running) {
            System.out.println("===== 登录系统 =====");
            System.out.println("1. 注册普通用户");
            System.out.println("2. 登录");
            System.out.println("3. 退出");
            System.out.println("===================");

            System.out.print("请输入选项（1-3）：");
            String input = sc.nextLine();
            // 验证输入是否为数字
            if (!input.matches("^\\d{1,10}$")) { // 使用正则表达式确保输入为数字
                System.out.println("输入无效！请输入数字 1-3。");
                continue; // 提示后重新输入
            }
            int choice = Integer.parseInt(input);
            switch (choice) {
                case 1: // 注册普通用户
                    System.out.print("请输入用户名（要求6到12位的纯数字）：");
                    String newUsername = sc.nextLine();
                    System.out.println("密码要求位：6到16位，必须同时含有数字、大小写字母、特殊字符{~@#$%*_\\-+=:.?}的一种");
                    System.out.print("请输入密码：");
                    String newPassword = sc.nextLine();
                    loginSystem.registerUser(newUsername, newPassword); // 默认注册为普通用户
                    break;
                case 2: // 登录
                    System.out.print("请输入用户名：");
                    String username = sc.nextLine();
                    System.out.print("请输入密码：");
                    String password = sc.nextLine();
                    String role = loginSystem.login(username, password);
                    if (role != null) {
                        if (role.equals("Admin")) {
                            adminMenu();
                        } else if (role.equals("User")) {
                            userMenu();
                        }
                    }
                    break;
                case 3: // 退出
                    running = false;
                    loginSystem.saveToFile();
                    System.out.println("退出系统！");
                    break;
                default:
                    System.out.println("输入错误！");
            }
        }
        sc.close();
    }

    // 管理员菜单
    public static void adminMenu() {
        StudentManager studentManager = new StudentManager();
        studentManager.menu();
    }

    // 普通用户菜单
    public static void userMenu() {
        StudentManager studentManager = new StudentManager();
        studentManager.viewOnlyMenu();
    }
}
